package IO;

import java.io.*;

public class 字节流的读取 {
    public static void main(String[] args) {

        method2();
    }
    private static void method2(){
        //定义一个在本方法中都生效的局部变量in,注意手动初始化值为null
        InputStream in=null;
        try{
            in=new BufferedInputStream(new FileInputStream("D:\\IO流练习\\1.txt"));
       //进行流的读取
            int b;
            while ((b=in.read())!=-1){
                System.out.println(b);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {//关流操作
            try{
                in.close();
            }
            catch(IOException e) {
                e.printStackTrace();
            }
        }
    }
    //本方法用于测试字节流的读取
    private static void method() {
        //创建一个在本方法都生效的局部变量注意手动初始化
        InputStream in = null;
        try {
            //1.创建字节输入流对象用于读取
            //InputStream in = new InputStream();//报错原因：抽象类不可实例化
            //InputStream in = new FileInputStream(new File("E:\\ready\\1.txt"));
            in = new FileInputStream("E:\\ready\\1.txt");
            //2.开始读取
            /*read()每次调用都会读取一个字节，如果读到了数据的末尾，返回-1*/
//            System.out.println(in.read());
//            System.out.println(in.read());
//            System.out.println(in.read());
//            System.out.println(in.read());
            //需求：需要循环读取文件中的所有内容，直至读完
            //定义变量，记录读到的数据
            int b;
            while((b=in.read())!= -1){
                System.out.println(b);
            }
        } catch (Exception e) {
            e.printStackTrace();//打印错误信息
            /*try-catch结构中的第三个部分：finally{}
             * 这部分不论是否捕获到异常，是一定会被执行到的代码，常用于关流*/
        }finally {
            try {
                //3.释放资源，流资源用完必须释放！！！
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
